﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using AutoR.Helpers;
using AutoR.Services;
using LiteDB;
using Newtonsoft.Json;
using Prism.Mvvm;

namespace AutoR.Models
{
	// Token: 0x020001E4 RID: 484
	public class UserShip : BindableBase
	{
		// Token: 0x170002C9 RID: 713
		// (get) Token: 0x06000A45 RID: 2629 RVA: 0x0006B900 File Offset: 0x00069B00
		// (set) Token: 0x06000A46 RID: 2630 RVA: 0x0006B908 File Offset: 0x00069B08
		[BsonIgnore]
		public bool status
		{
			[CompilerGenerated]
			get
			{
				return this.<status>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<status>k__BackingField == value)
				{
					return;
				}
				this.<status>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.status);
			}
		}

		// Token: 0x170002CA RID: 714
		// (get) Token: 0x06000A47 RID: 2631 RVA: 0x0006B935 File Offset: 0x00069B35
		// (set) Token: 0x06000A48 RID: 2632 RVA: 0x0006B940 File Offset: 0x00069B40
		public int fleetId
		{
			[CompilerGenerated]
			get
			{
				return this.<fleetId>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<fleetId>k__BackingField == value)
				{
					return;
				}
				this.<fleetId>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsInExplore);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.fleetId);
			}
		}

		// Token: 0x170002CB RID: 715
		// (get) Token: 0x06000A49 RID: 2633 RVA: 0x0006B978 File Offset: 0x00069B78
		// (set) Token: 0x06000A4A RID: 2634 RVA: 0x0006B980 File Offset: 0x00069B80
		public int id
		{
			[CompilerGenerated]
			get
			{
				return this.<id>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<id>k__BackingField == value)
				{
					return;
				}
				this.<id>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsInRepair);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.id);
			}
		}

		// Token: 0x170002CC RID: 716
		// (get) Token: 0x06000A4B RID: 2635 RVA: 0x0006B9B8 File Offset: 0x00069BB8
		// (set) Token: 0x06000A4C RID: 2636 RVA: 0x0006B9C0 File Offset: 0x00069BC0
		public int shipCid
		{
			get
			{
				return this._shipCid;
			}
			set
			{
				if (this._shipCid == value)
				{
					return;
				}
				this._shipCid = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.shipCid);
				this.ShipConfig = Runtime.Configs.shipCard.SingleOrDefault((ShipConfig i) => i.cid == this.shipCid);
			}
		}

		// Token: 0x170002CD RID: 717
		// (get) Token: 0x06000A4D RID: 2637 RVA: 0x0006BA0E File Offset: 0x00069C0E
		// (set) Token: 0x06000A4E RID: 2638 RVA: 0x0006BA18 File Offset: 0x00069C18
		public bool isLocked
		{
			[CompilerGenerated]
			get
			{
				return this.<isLocked>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<isLocked>k__BackingField == value)
				{
					return;
				}
				this.<isLocked>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.isLocked);
			}
		}

		// Token: 0x170002CE RID: 718
		// (get) Token: 0x06000A4F RID: 2639 RVA: 0x0006BA45 File Offset: 0x00069C45
		// (set) Token: 0x06000A50 RID: 2640 RVA: 0x0006BA50 File Offset: 0x00069C50
		public int level
		{
			[CompilerGenerated]
			get
			{
				return this.<level>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<level>k__BackingField == value)
				{
					return;
				}
				this.<level>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.RepairTime);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.level);
			}
		}

		// Token: 0x170002CF RID: 719
		// (get) Token: 0x06000A51 RID: 2641 RVA: 0x0006BA88 File Offset: 0x00069C88
		// (set) Token: 0x06000A52 RID: 2642 RVA: 0x0006BA90 File Offset: 0x00069C90
		public bool married
		{
			[CompilerGenerated]
			get
			{
				return this.<married>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<married>k__BackingField == value)
				{
					return;
				}
				this.<married>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsLoveFull);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.LovePercent);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.RepairTime);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.married);
			}
		}

		// Token: 0x170002D0 RID: 720
		// (get) Token: 0x06000A53 RID: 2643 RVA: 0x0006BADE File Offset: 0x00069CDE
		// (set) Token: 0x06000A54 RID: 2644 RVA: 0x0006BAE8 File Offset: 0x00069CE8
		public int love
		{
			[CompilerGenerated]
			get
			{
				return this.<love>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<love>k__BackingField == value)
				{
					return;
				}
				this.<love>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsLove);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsLoveFull);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.LovePercent);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.love);
			}
		}

		// Token: 0x170002D1 RID: 721
		// (get) Token: 0x06000A55 RID: 2645 RVA: 0x0006BB36 File Offset: 0x00069D36
		[BsonIgnore]
		public bool IsLove
		{
			get
			{
				return this.love == 100;
			}
		}

		// Token: 0x170002D2 RID: 722
		// (get) Token: 0x06000A56 RID: 2646 RVA: 0x0006BB42 File Offset: 0x00069D42
		[BsonIgnore]
		public bool IsLoveFull
		{
			get
			{
				if (!this.married)
				{
					return this.love == 100;
				}
				return this.love == 200;
			}
		}

		// Token: 0x170002D3 RID: 723
		// (get) Token: 0x06000A57 RID: 2647 RVA: 0x0006BB64 File Offset: 0x00069D64
		[BsonIgnore]
		public float LovePercent
		{
			get
			{
				if (!this.married)
				{
					return (float)this.love / 100f;
				}
				return (float)this.love / 200f;
			}
		}

		// Token: 0x170002D4 RID: 724
		// (get) Token: 0x06000A58 RID: 2648 RVA: 0x0006BB89 File Offset: 0x00069D89
		// (set) Token: 0x06000A59 RID: 2649 RVA: 0x0006BB94 File Offset: 0x00069D94
		public ShipBattleProps battleProps
		{
			[CompilerGenerated]
			get
			{
				return this.<battleProps>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (object.Equals(this.<battleProps>k__BackingField, value))
				{
					return;
				}
				this.<battleProps>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.BrokenType);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsShipNeedRepair);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Image);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.BrokenTypeName);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.HPName);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.HPPercent);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.RepairTime);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.NeedSupplyAmount);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsShipNeedSupply);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.battleProps);
			}
		}

		// Token: 0x170002D5 RID: 725
		// (get) Token: 0x06000A5A RID: 2650 RVA: 0x0006BC27 File Offset: 0x00069E27
		// (set) Token: 0x06000A5B RID: 2651 RVA: 0x0006BC30 File Offset: 0x00069E30
		public ShipBattleProps battlePropsMax
		{
			[CompilerGenerated]
			get
			{
				return this.<battlePropsMax>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (object.Equals(this.<battlePropsMax>k__BackingField, value))
				{
					return;
				}
				this.<battlePropsMax>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.BrokenType);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsShipNeedRepair);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Image);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.BrokenTypeName);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.HPName);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.HPPercent);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.RepairTime);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.NeedSupplyAmount);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsShipNeedSupply);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.battlePropsMax);
			}
		}

		// Token: 0x170002D6 RID: 726
		// (get) Token: 0x06000A5C RID: 2652 RVA: 0x0006BCC3 File Offset: 0x00069EC3
		public int DismantleNum
		{
			get
			{
				return this.ShipConfig.dismantle.Values.Sum();
			}
		}

		// Token: 0x170002D7 RID: 727
		// (get) Token: 0x06000A5D RID: 2653 RVA: 0x0006BCDA File Offset: 0x00069EDA
		// (set) Token: 0x06000A5E RID: 2654 RVA: 0x0006BCE4 File Offset: 0x00069EE4
		public int skillLevel
		{
			[CompilerGenerated]
			get
			{
				return this.<skillLevel>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<skillLevel>k__BackingField == value)
				{
					return;
				}
				this.<skillLevel>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.skillLevel);
			}
		}

		// Token: 0x170002D8 RID: 728
		// (get) Token: 0x06000A5F RID: 2655 RVA: 0x0006BD11 File Offset: 0x00069F11
		// (set) Token: 0x06000A60 RID: 2656 RVA: 0x0006BD1C File Offset: 0x00069F1C
		public int skillType
		{
			[CompilerGenerated]
			get
			{
				return this.<skillType>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<skillType>k__BackingField == value)
				{
					return;
				}
				this.<skillType>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.skillType);
			}
		}

		// Token: 0x170002D9 RID: 729
		// (get) Token: 0x06000A61 RID: 2657 RVA: 0x0006BD49 File Offset: 0x00069F49
		// (set) Token: 0x06000A62 RID: 2658 RVA: 0x0006BD54 File Offset: 0x00069F54
		public int nextSkillId
		{
			[CompilerGenerated]
			get
			{
				return this.<nextSkillId>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (this.<nextSkillId>k__BackingField == value)
				{
					return;
				}
				this.<nextSkillId>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.CanSkillLevelUp);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.nextSkillId);
			}
		}

		// Token: 0x170002DA RID: 730
		// (get) Token: 0x06000A63 RID: 2659 RVA: 0x0006BD8C File Offset: 0x00069F8C
		// (set) Token: 0x06000A64 RID: 2660 RVA: 0x0006BD94 File Offset: 0x00069F94
		public List<int> equipmentArr
		{
			get
			{
				return this._equipmentArr;
			}
			set
			{
				if (object.Equals(this._equipmentArr, value))
				{
					return;
				}
				this._equipmentArr = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.equipmentArr);
				List<int> equipmentArr = this._equipmentArr;
				List<EquipmentConfig> equipment;
				if (equipmentArr == null)
				{
					equipment = null;
				}
				else
				{
					equipment = (from i in equipmentArr
					select Runtime.Configs.shipEquipment.Single((EquipmentConfig se) => se.cid == i)).ToList<EquipmentConfig>();
				}
				this.Equipment = equipment;
			}
		}

		// Token: 0x170002DB RID: 731
		// (get) Token: 0x06000A65 RID: 2661 RVA: 0x0006BE00 File Offset: 0x0006A000
		// (set) Token: 0x06000A66 RID: 2662 RVA: 0x0006BE08 File Offset: 0x0006A008
		public List<EquipmentConfig> Equipment
		{
			[CompilerGenerated]
			get
			{
				return this.<Equipment>k__BackingField;
			}
			[CompilerGenerated]
			private set
			{
				if (object.Equals(this.<Equipment>k__BackingField, value))
				{
					return;
				}
				this.<Equipment>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Equipment1);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Equipment2);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Equipment3);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Equipment4);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Equipment);
			}
		}

		// Token: 0x170002DC RID: 732
		// (get) Token: 0x06000A67 RID: 2663 RVA: 0x0006BE64 File Offset: 0x0006A064
		[BsonIgnore]
		public EquipmentConfig Equipment1
		{
			get
			{
				EquipmentConfig result;
				if (this.Equipment != null)
				{
					if ((result = this.Equipment.ElementAtOrDefault(0)) == null)
					{
						return new EquipmentConfig();
					}
				}
				else
				{
					result = null;
				}
				return result;
			}
		}

		// Token: 0x170002DD RID: 733
		// (get) Token: 0x06000A68 RID: 2664 RVA: 0x0006BE85 File Offset: 0x0006A085
		[BsonIgnore]
		public EquipmentConfig Equipment2
		{
			get
			{
				EquipmentConfig result;
				if (this.Equipment != null)
				{
					if ((result = this.Equipment.ElementAtOrDefault(1)) == null)
					{
						return new EquipmentConfig();
					}
				}
				else
				{
					result = null;
				}
				return result;
			}
		}

		// Token: 0x170002DE RID: 734
		// (get) Token: 0x06000A69 RID: 2665 RVA: 0x0006BEA6 File Offset: 0x0006A0A6
		[BsonIgnore]
		public EquipmentConfig Equipment3
		{
			get
			{
				EquipmentConfig result;
				if (this.Equipment != null)
				{
					if ((result = this.Equipment.ElementAtOrDefault(2)) == null)
					{
						return new EquipmentConfig();
					}
				}
				else
				{
					result = null;
				}
				return result;
			}
		}

		// Token: 0x170002DF RID: 735
		// (get) Token: 0x06000A6A RID: 2666 RVA: 0x0006BEC7 File Offset: 0x0006A0C7
		[BsonIgnore]
		public EquipmentConfig Equipment4
		{
			get
			{
				EquipmentConfig result;
				if (this.Equipment != null)
				{
					if ((result = this.Equipment.ElementAtOrDefault(3)) == null)
					{
						return new EquipmentConfig();
					}
				}
				else
				{
					result = null;
				}
				return result;
			}
		}

		// Token: 0x170002E0 RID: 736
		// (get) Token: 0x06000A6B RID: 2667 RVA: 0x0006BEE8 File Offset: 0x0006A0E8
		// (set) Token: 0x06000A6C RID: 2668 RVA: 0x0006BEF0 File Offset: 0x0006A0F0
		public Strengthen strengthenAttribute
		{
			[CompilerGenerated]
			get
			{
				return this.<strengthenAttribute>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (object.Equals(this.<strengthenAttribute>k__BackingField, value))
				{
					return;
				}
				this.<strengthenAttribute>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.AtkSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsNeedStrengthen);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.CanSkillLevelUp);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.TorpedoSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.AirDefSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.DefSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.strengthenAttribute);
			}
		}

		// Token: 0x170002E1 RID: 737
		// (get) Token: 0x06000A6D RID: 2669 RVA: 0x0006BF62 File Offset: 0x0006A162
		// (set) Token: 0x06000A6E RID: 2670 RVA: 0x0006BF6C File Offset: 0x0006A16C
		[BsonIgnore]
		private ShipConfig ShipConfig
		{
			[CompilerGenerated]
			get
			{
				return this.<ShipConfig>k__BackingField;
			}
			[CompilerGenerated]
			set
			{
				if (object.Equals(this.<ShipConfig>k__BackingField, value))
				{
					return;
				}
				this.<ShipConfig>k__BackingField = value;
				this.OnPropertyChanged(<>PropertyChangedEventArgs.DismantleNum);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Name);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Star);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Type);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.TypeName);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsEvo);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.evoCid);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.RepairTime);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.AtkSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.IsNeedStrengthen);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.CanSkillLevelUp);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.TorpedoSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.AirDefSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.DefSTR);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Strengthen);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.Image);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.SmallImage);
				this.OnPropertyChanged(<>PropertyChangedEventArgs.ShipConfig);
			}
		}

		// Token: 0x170002E2 RID: 738
		// (get) Token: 0x06000A6F RID: 2671 RVA: 0x0006C057 File Offset: 0x0006A257
		public string Name
		{
			get
			{
				return this.ShipConfig.title;
			}
		}

		// Token: 0x170002E3 RID: 739
		// (get) Token: 0x06000A70 RID: 2672 RVA: 0x0006C064 File Offset: 0x0006A264
		public int Star
		{
			get
			{
				return this.ShipConfig.star;
			}
		}

		// Token: 0x170002E4 RID: 740
		// (get) Token: 0x06000A71 RID: 2673 RVA: 0x0006C071 File Offset: 0x0006A271
		public ShipType Type
		{
			get
			{
				return this.ShipConfig.type;
			}
		}

		// Token: 0x170002E5 RID: 741
		// (get) Token: 0x06000A72 RID: 2674 RVA: 0x0006C07E File Offset: 0x0006A27E
		[BsonIgnore]
		public string TypeName
		{
			get
			{
				return this.Type.ToName();
			}
		}

		// Token: 0x170002E6 RID: 742
		// (get) Token: 0x06000A73 RID: 2675 RVA: 0x0006C08B File Offset: 0x0006A28B
		[BsonIgnore]
		public bool IsEvo
		{
			get
			{
				return this.ShipConfig.evoClass > 0;
			}
		}

		// Token: 0x170002E7 RID: 743
		// (get) Token: 0x06000A74 RID: 2676 RVA: 0x0006C09B File Offset: 0x0006A29B
		[BsonIgnore]
		public int evoCid
		{
			get
			{
				return this.ShipConfig.evoCid;
			}
		}

		// Token: 0x170002E8 RID: 744
		// (get) Token: 0x06000A75 RID: 2677 RVA: 0x0006C0A8 File Offset: 0x0006A2A8
		public bool IsShipNeedRepair
		{
			get
			{
				return this.BrokenType != ShipBrokenType.NoBroken;
			}
		}

		// Token: 0x170002E9 RID: 745
		// (get) Token: 0x06000A76 RID: 2678 RVA: 0x0006C0B6 File Offset: 0x0006A2B6
		[BsonIgnore]
		public ShipBrokenType BrokenType
		{
			get
			{
				if (this.battleProps.hp * 4 < this.battlePropsMax.hp)
				{
					return ShipBrokenType.BigBroken;
				}
				if (this.battleProps.hp * 2 < this.battlePropsMax.hp)
				{
					return ShipBrokenType.MiddleBroken;
				}
				return ShipBrokenType.NoBroken;
			}
		}

		// Token: 0x170002EA RID: 746
		// (get) Token: 0x06000A77 RID: 2679 RVA: 0x0006C0F1 File Offset: 0x0006A2F1
		[BsonIgnore]
		public string BrokenTypeName
		{
			get
			{
				return this.BrokenType.ToName();
			}
		}

		// Token: 0x170002EB RID: 747
		// (get) Token: 0x06000A78 RID: 2680 RVA: 0x0006C0FE File Offset: 0x0006A2FE
		[BsonIgnore]
		public string HPName
		{
			get
			{
				return string.Format("{0}/{1}", this.battleProps.hp, this.battlePropsMax.hp);
			}
		}

		// Token: 0x170002EC RID: 748
		// (get) Token: 0x06000A79 RID: 2681 RVA: 0x0006C12A File Offset: 0x0006A32A
		[BsonIgnore]
		public float HPPercent
		{
			get
			{
				return (float)this.battleProps.hp / (float)this.battlePropsMax.hp;
			}
		}

		// Token: 0x170002ED RID: 749
		// (get) Token: 0x06000A7A RID: 2682 RVA: 0x0006C148 File Offset: 0x0006A348
		[BsonIgnore]
		public int RepairTime
		{
			get
			{
				if (this.battlePropsMax.hp == this.battleProps.hp)
				{
					return 0;
				}
				double num = 0.0;
				if (this.level >= 11)
				{
					num = Math.Sqrt((double)(this.level - 11)) * 10.0 + 50.0;
				}
				double num2 = ((double)(this.level * 5) + num) * (double)this.ShipConfig.repairTime * (double)(this.battlePropsMax.hp - this.battleProps.hp) + 30.0;
				if (this.married)
				{
					num2 *= 0.699999988079071;
				}
				return Convert.ToInt32(Math.Ceiling(num2));
			}
		}

		// Token: 0x170002EE RID: 750
		// (get) Token: 0x06000A7B RID: 2683 RVA: 0x0006C202 File Offset: 0x0006A402
		[BsonIgnore]
		public bool CanSkillLevelUp
		{
			get
			{
				return !this.IsNeedStrengthen && this.nextSkillId > 0;
			}
		}

		// Token: 0x170002EF RID: 751
		// (get) Token: 0x06000A7C RID: 2684 RVA: 0x0006C217 File Offset: 0x0006A417
		[BsonIgnore]
		public bool IsShipNeedSupply
		{
			get
			{
				return this.NeedSupplyAmount > 0;
			}
		}

		// Token: 0x170002F0 RID: 752
		// (get) Token: 0x06000A7D RID: 2685 RVA: 0x0006C224 File Offset: 0x0006A424
		[BsonIgnore]
		public int NeedSupplyAmount
		{
			get
			{
				return this.battlePropsMax.oil - this.battleProps.oil + (this.battlePropsMax.needAmmoMax - this.battleProps.ammo) + (this.battlePropsMax.aluminium - this.battleProps.aluminium);
			}
		}

		// Token: 0x170002F1 RID: 753
		// (get) Token: 0x06000A7E RID: 2686 RVA: 0x0006C278 File Offset: 0x0006A478
		[BsonIgnore]
		public int AtkSTR
		{
			get
			{
				return this.ShipConfig.strengthenTop.atk - this.strengthenAttribute.atk;
			}
		}

		// Token: 0x170002F2 RID: 754
		// (get) Token: 0x06000A7F RID: 2687 RVA: 0x0006C296 File Offset: 0x0006A496
		[BsonIgnore]
		public int TorpedoSTR
		{
			get
			{
				return this.ShipConfig.strengthenTop.torpedo - this.strengthenAttribute.torpedo;
			}
		}

		// Token: 0x170002F3 RID: 755
		// (get) Token: 0x06000A80 RID: 2688 RVA: 0x0006C2B4 File Offset: 0x0006A4B4
		[BsonIgnore]
		public int AirDefSTR
		{
			get
			{
				return this.ShipConfig.strengthenTop.air_def - this.strengthenAttribute.air_def;
			}
		}

		// Token: 0x170002F4 RID: 756
		// (get) Token: 0x06000A81 RID: 2689 RVA: 0x0006C2D2 File Offset: 0x0006A4D2
		[BsonIgnore]
		public int DefSTR
		{
			get
			{
				return this.ShipConfig.strengthenTop.def - this.strengthenAttribute.def;
			}
		}

		// Token: 0x170002F5 RID: 757
		// (get) Token: 0x06000A82 RID: 2690 RVA: 0x0006C2F0 File Offset: 0x0006A4F0
		[BsonIgnore]
		public Strengthen Strengthen
		{
			get
			{
				return this.ShipConfig.strengthenSupplyExp;
			}
		}

		// Token: 0x170002F6 RID: 758
		// (get) Token: 0x06000A83 RID: 2691 RVA: 0x0006C2FD File Offset: 0x0006A4FD
		[BsonIgnore]
		public bool IsNeedStrengthen
		{
			get
			{
				return this.AtkSTR + this.TorpedoSTR + this.AirDefSTR + this.DefSTR > 0;
			}
		}

		// Token: 0x170002F7 RID: 759
		// (get) Token: 0x06000A84 RID: 2692 RVA: 0x0006C31D File Offset: 0x0006A51D
		[BsonIgnore]
		public string Image
		{
			get
			{
				if (!this.IsShipNeedRepair)
				{
					return this.ShipConfig.Image;
				}
				return this.ShipConfig.BrokenImage;
			}
		}

		// Token: 0x170002F8 RID: 760
		// (get) Token: 0x06000A85 RID: 2693 RVA: 0x0006C33E File Offset: 0x0006A53E
		[BsonIgnore]
		public string SmallImage
		{
			get
			{
				return this.ShipConfig.SmallImage;
			}
		}

		// Token: 0x170002F9 RID: 761
		// (get) Token: 0x06000A86 RID: 2694 RVA: 0x0006C34B File Offset: 0x0006A54B
		[BsonIgnore]
		public bool IsInRepair
		{
			get
			{
				return Runtime.Game.RepairDock.Any((RepairDockInfo i) => i.shipId == this.id);
			}
		}

		// Token: 0x170002FA RID: 762
		// (get) Token: 0x06000A87 RID: 2695 RVA: 0x0006C368 File Offset: 0x0006A568
		[BsonIgnore]
		public bool IsInExplore
		{
			get
			{
				return Runtime.Game.PVEExplore.Any((UserExplore i) => i.fleetId == this.fleetId);
			}
		}

		// Token: 0x06000A88 RID: 2696 RVA: 0x0006C388 File Offset: 0x0006A588
		public void StrengthenShip(UserShip eat)
		{
			this.strengthenAttribute.air_def += eat.Strengthen.air_def;
			this.strengthenAttribute.atk += eat.Strengthen.atk;
			this.strengthenAttribute.def += eat.Strengthen.def;
			this.strengthenAttribute.torpedo += eat.Strengthen.torpedo;
			if (this.ShipConfig.strengthenTop.air_def < this.strengthenAttribute.air_def)
			{
				this.strengthenAttribute.air_def = this.ShipConfig.strengthenTop.air_def;
			}
			if (this.ShipConfig.strengthenTop.atk < this.strengthenAttribute.atk)
			{
				this.strengthenAttribute.atk = this.ShipConfig.strengthenTop.atk;
			}
			if (this.ShipConfig.strengthenTop.def < this.strengthenAttribute.def)
			{
				this.strengthenAttribute.def = this.ShipConfig.strengthenTop.def;
			}
			if (this.ShipConfig.strengthenTop.torpedo < this.strengthenAttribute.torpedo)
			{
				this.strengthenAttribute.torpedo = this.ShipConfig.strengthenTop.torpedo;
			}
		}

		// Token: 0x040009B0 RID: 2480
		[JsonConverter(typeof(DateTimeConverter))]
		[BsonIgnore]
		public DateTime create_time;

		// Token: 0x040009B4 RID: 2484
		private int _shipCid;

		// Token: 0x040009B5 RID: 2485
		private List<int> _equipmentArr;
	}
}
